package org.example.erat.repository;

import org.example.erat.entity.Course;
import org.example.erat.entity.Experiment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 实验数据访问接口
 */
@Repository
public interface ExperimentRepository extends JpaRepository<Experiment, Long> {

    /**
     * 根据实验名称和课程查找实验
     * @param name 实验名称
     * @param course 课程对象
     * @return 实验对象
     */
    Optional<Experiment> findByNameAndCourse(String name, Course course);

    /**
     * 根据课程查找实验列表
     * @param course 课程对象
     * @return 实验列表
     */
    List<Experiment> findByCourse(Course course);

    /**
     * 根据课程ID查找实验列表
     * @param courseId 课程ID
     * @return 实验列表
     */
    List<Experiment> findByCourseId(Long courseId);

    /**
     * 根据实验编号和课程查找实验
     * @param experimentNumber 实验编号
     * @param course 课程对象
     * @return 实验对象
     */
    Optional<Experiment> findByExperimentNumberAndCourse(Integer experimentNumber, Course course);
}
